Bootstrapping Software Revolutions

Mark Leighton Fisher on 2003-06-16T17:37:17

There are two ways to bootstrap software revolutions (IMHO):

  1. Provide the developer community with detailed free or inexpensive standards to serve as specifications for the software. IETF standards often serve this purpose.
  2. Provide source code to the developer community with fairly loose licenses so that developers can either build directly on this code base or easily create code similar to the provided source code — what I call here "Available Source", where what matters is that the source is available irrespective of how the source is licensed.

The rise of the Internet was probably a foregone conclusion, but the rise of the specific technology of the World Wide Web was not. Other technologies existed that could have provided similar ease-of-use to end-users, including Gopher, Hyper-G, and Xanadu. Back in 1993 I needed a Web-like technology to implement the TCE Corporate Technical Memory (CTM), a document-based knowledge management application (this was before "knowledge management" had been coined as a phrase). Only the World Wide Web technology was available for the platforms I was using (Sun server and Windows clients) with low-cost licensing (free for the original CERN WWW server software and for the Cello graphical browser (pre-Netscape days)).

The other technologies I've mentioned had advantages over WWW technology:

So why not Gopher, Hyper-G, or Xanadu? Because they either cost too much for in-house developers (Xanadu and Gopher) or did not have the platform support I needed (Hyper-G IIRC). When you want the world to start using your new category of software, you need to open the door to other developers so they can add onto (think Microsoft Office) or recreate (think web servers) your new category of software.

Part of why Expert Systems did not catch on better was that (IMHO) the hype built so quickly that anyone with a good (or even mediocre) idea about Expert Systems immediately tried to build a company selling expensive software around the idea. Companies selling expensive software (whether Closed Source or Available Source) are not a good place to obtain software for developers wanting to try out a new category of software — tinkerers, in other words. World Wide Web technology could catch on worldwide because commercial developers, in-house developers, and at-home developers could all download WWW software for multiple platforms and fiddle with it without having to justify the expense of obtaining it to someone else. (The other problem for Expert Systems (again IMHO) was that it is not the be-all and end-all of AI that some thought it was.)

Sometimes you need to pay a lot for software — but sometimes you need to pay nothing for software. When you need 1M+ lines of enterprise-ready code (SAP and its ilk come to mind), then you will likely want to pay big bucks because you need big support, big training, big consulting, etc. When you are starting a skunk works project — for example, Web Services in many companies in 2003 — you will likely want to pay nothing for the software, as you cannot get money in the budget for that software anyway.

Perl examples of new category software for tinkerers include the original libwww-perl for Perl V4.036 that enabled easier building of WWW servers and clients, along with Frontier::RPC that was one of the first Available Source implementations of XML-RPC, and SOAP::Lite which is an easy-to-use SOAP interface/handler module. The software for new categories does not have to be Available Source, but it must be either standards-based (with a detailed enough standard that interoperable software can be easily written) or Available Source (so that developers can reverse-engineer the software), OR both. At least since the advent of the Perl 5 module system, most new category software with a decent standard quickly also becomes Available Source, as a Perl implementation is soon developed.

In short: No-Cost Standards and/or Software are Necessary for Bootstrapping Software Revolutions. Academic papers or expensive software are not enough by themselves to bootstrap a software revolution — developers must be able to build or obtain the base software at very little expense so they can tinker with the software without needing to show an immediate ROI.